import { ESObjectWithLocation } from 'esobjs-xe2-plugin/dist-node/esobjs-xe2-plugin-main';
import { PartialWithUndefinedReactivePropsToNativeProps, ReactivePropsToNativePropsAndChanged, extendClassProps } from "xbsj-xe2/dist-node/xe2-base-utils";
//ESBoxEntity类的定义，继承自谁可以自行选择，
export class ESBoxEntity extends ESObjectWithLocation {
    //tags: ['ESObjects', '_ES_Impl_Cesium', '_ES_Impl_UE']; 代表有Cesium实现
    static type = this.register('ESBoxEntity', this, { chsName: '实例盒子', tags: ['ESObjects', '_ES_Impl_Cesium'], description: "Cesium Entity box" });
    get typeName() { return 'ESBoxEntity'; }
    get defaultProps() { return ESBoxEntity.createDefaultProps(); }
    get json() { return this._innerGetJson(); }
    set json(value) { this._innerSetJson(value); }

    constructor(id?: string) {
        super(id);
    }
}

export namespace ESBoxEntity {
    export const createDefaultProps = () => ({
        ...ESObjectWithLocation.createDefaultProps(),
        size: [50, 50, 50] as [number, number, number],
        color: [1, 1, 1, 1] as [number, number, number, number]
    });
}
extendClassProps(ESBoxEntity.prototype, ESBoxEntity.createDefaultProps);
export interface ESBoxEntity extends ReactivePropsToNativePropsAndChanged<ReturnType<typeof ESBoxEntity.createDefaultProps>> { }
type JsonType = PartialWithUndefinedReactivePropsToNativeProps<ReturnType<typeof ESBoxEntity.createDefaultProps> & { type: string }>;



